Provider Taxonomy Codes

A Guide to the Health Care Provider Taxonomy Code Set

Author

Andrew Allen Bruce

Last updated

July 27, 2024

A standardized system of codes used to classify and identify health care providers.

Key Points

  • Purpose: Categorize health care providers by their type, classification, and specialization.
  • Maintenance: National Uniform Claim Committee (NUCC). Updated twice a year, in January and July.
  • Application: Used in various healthcare processes, including:
    • Electronic healthcare transactions

    • NPI enumeration

    • Medicare provider enrollment

    • Insurance credentialing

    • Claims processing

    • Determining network adequacy

Overview

The Health Care Provider Taxonomy Code Set is an external, non-medical data code set designed for use in an electronic environment, specifically within the ASC X12N Health Care transactions, including those mandated under HIPAA.

A taxonomy code is a unique alphanumeric code, ten characters in length, that describes a health care service provider’s type, classification, and the area of specialization.

Taxonomy codes are selected by the provider at the time of NPI registration. When providers apply for NPIs, the National Plan and Provider Enumeration System (NPPES) does not verify the accuracy of the selected taxonomy codes. It only validates that the codes exist within the current version of the code set.

The code set is structured into 3 distinct levels:

  1. Provider Grouping
  2. Classification
  3. Area of Specialization

It is important for healthcare providers to select the most appropriate taxonomy code(s) as it can affect various aspects of their practice, including billing and claims processing. Selection of a taxonomy code does not replace any credentialing or validation process that the provider requesting the code should complete.

Hierarchy

flowchart LR
  A{{Group}} -.- D(Multi-Specialty)
  A{{Group}} -.- E(Single-Specialty)
  B{{Individual}} --> F(Allopathic)
  B{{Individual}} -.- G(Behavioral)
  C{{Non-Individual}} -.- H(Hospitals)
  C{{Non-Individual}} -.- I(Laboratories)
  F(Allopathic) --> J([Anesthesiology])
  J([Anesthesiology]) --o K[[207L00000X]]
  J([Anesthesiology]) --> L>Addiction Medicine]
  L>Addiction Medicine] --o M[[207LA0401X]]

Example of Taxonomy Hierarchy

Level I: Provider Grouping

A major grouping of service(s) or occupation(s) of health care providers.

Examples:

  • Allopathic & Osteopathic Physicians
  • Dental Providers
  • Hospitals
Level II: Classification

A more specific service or occupation related to the Provider Grouping.

For example, the Classification for Allopathic & Osteopathic Physicians is based upon the General Specialty Certificates, as issued by the appropriate national boards.

The following boards, however, will have their general certificates appear as Level III Areas strictly due to display limitations of the code set for Boards that have multiple general certificates:

  • Medical Genetics
  • Preventive Medicine
  • Psychiatry & Neurology
  • Radiology
  • Surgery
  • Otolaryngology
  • Pathology
Level III: Area of Specialization

A more specialized area of the Classification in which a provider chooses to practice or make services available.

For example, the Area of Specialization for provider grouping Allopathic & Osteopathic Physicians is based upon the Subspecialty Certificates as issued by the appropriate national boards.


Code
taxonomy <- provider::taxonomies(shape = "wide") |> 
  select(grouping,
         classification,
         specialization,
         code)

htmltools::browsable(
  htmltools::tagList(
    htmltools::tags$button(
      "Expand/collapse all", 
      onclick = "Reactable.toggleAllRowsExpanded('taxonomy-table')"
      ),
    reactable::reactable(
      taxonomy,
      groupBy = c(
        "grouping", 
        "classification", 
        "specialization"
        ),
      elementId = "taxonomy-table",
      columns = list(
        grouping = reactable::colDef(
          name = "Provider\nGrouping"
          ),
        classification = reactable::colDef(
          name = "Classification"
          ),
        specialization = reactable::colDef(
          name = "Area of\nSpecialization",
          na = "None"
          ),
        code = reactable::colDef(
          name = "Taxonomy\nCode",
          style = list(fontFamily = "monospace", whiteSpace = "pre")
          )
        ),
      # compact = TRUE,
      searchable = TRUE,
      pagination = FALSE,
      highlight = TRUE,
      bordered = TRUE,
      theme = reactableTheme(
    borderColor = "#dfe2e5",
    stripedColor = "#f6f8fa",
    highlightColor = "#f0f5f9",
    cellPadding = "28px 16px",
    searchInputStyle = list(width = "100%")
  )
      )
    )
  )


Medicare Crosswalk

Providers and suppliers with the proper taxonomy code eligible for Medicare programs.

The Medicare Provider and Supplier Taxonomy Crosswalk dataset lists the providers and suppliers eligible to enroll in Medicare programs with the proper healthcare provider taxonomy code. This data includes the Medicare specialty codes, if available, provider/supplier type description, taxonomy code, and the taxonomy description.

Footnotes

Code
dplyr::tibble(
  ind = c(1:14),
  desc = c(
    "Medicare no longer enrolls this provider type.",
    "This is an arrangement whereby immunization services are rendered by health care providers who are under contract to the entity/individual who is enrolled in Medicare as a Mass Immunization Roster Biller. The Healthcare Provider Taxonomy Code(s) would be that (those) of the health care provider(s) who render the immunization services.",
    "Medicare carriers use Specialty Code 87 for Pharmacies when processing prescription drugs that are paid through the Medicare Physician Fee Schedule. However, the description for Specialty Code 87 remains All Other Suppliers.",
    "Because the Medicare Provider Type Physician/Undefined Physician Type applies to physicians,Unknown Supplier/Provider Specialty applies to other than physicians. Because Medicare does not enroll every non-physician supplier/provider type in the Healthcare Provider Taxonomy Code Set, we cannot arbitrarily link this Medicare Provider Type to all remaining supplier/provider types in the Healthcare Provider Taxonomy Code Set. In truth, this Medicare Provider Type would link to every Healthcare Provider Taxonomy Code (except those that describe physicians) that is listed in this document. We do not list them here because doing so would greatly increase the size of this document.",
    "Because the Medicare Provider Type indicates that the provider/supplier is a Physician, we have linked this to the most generic Allopathic & Osteopathic Physicians classification. It could technically link to every Allopathic & Osteopathic Physician.",
    "Medicare specialty code designation is for Part B DMEPOS purposes.",
    "Medicare specialty code designation is for Part B DMEPOS purposes.",
    "Medicare specialty code designation is for Part B DMEPOS purposes.",
    "Medicare specialty code designation is for Part B DMEPOS purposes.",
    "Medicare specialty code designation is for Part B DMEPOS purposes.",
    "Medicare specialty code designation is for Part B DMEPOS purposes.",
    "There is no linkage to specific Healthcare Provider Taxonomy Codes because an Indian Health Service facility can be various provider types/classifications.",
    "Medicare specialty code designation is for Part B DMEPOS purposes.",
    "Does not meet the definition of health care provider at 45 CFR 160.103 is not eligible for an NPI."
    )
  ) |>
  gt::gt(rowname_col = "ind") |> 
  gt::opt_table_font(gt::google_font(name = "Karla")) |>
  gt::cols_label(
    ind = "Mark",
    desc = "Footnote") |>
  gt::tab_style(
    style = gt::cell_text(
      font = gt::google_font(name = "Fira Mono")),
    locations = gt::cells_body(columns = c(ind))
  ) |> 
  gt::sub_missing(missing_text = "---") |> 
  gt::tab_options(
    quarto.disable_processing = TRUE
  )
Footnote
1 Medicare no longer enrolls this provider type.
2 This is an arrangement whereby immunization services are rendered by health care providers who are under contract to the entity/individual who is enrolled in Medicare as a Mass Immunization Roster Biller. The Healthcare Provider Taxonomy Code(s) would be that (those) of the health care provider(s) who render the immunization services.
3 Medicare carriers use Specialty Code 87 for Pharmacies when processing prescription drugs that are paid through the Medicare Physician Fee Schedule. However, the description for Specialty Code 87 remains All Other Suppliers.
4 Because the Medicare Provider Type Physician/Undefined Physician Type applies to physicians,Unknown Supplier/Provider Specialty applies to other than physicians. Because Medicare does not enroll every non-physician supplier/provider type in the Healthcare Provider Taxonomy Code Set, we cannot arbitrarily link this Medicare Provider Type to all remaining supplier/provider types in the Healthcare Provider Taxonomy Code Set. In truth, this Medicare Provider Type would link to every Healthcare Provider Taxonomy Code (except those that describe physicians) that is listed in this document. We do not list them here because doing so would greatly increase the size of this document.
5 Because the Medicare Provider Type indicates that the provider/supplier is a Physician, we have linked this to the most generic Allopathic & Osteopathic Physicians classification. It could technically link to every Allopathic & Osteopathic Physician.
6 Medicare specialty code designation is for Part B DMEPOS purposes.
7 Medicare specialty code designation is for Part B DMEPOS purposes.
8 Medicare specialty code designation is for Part B DMEPOS purposes.
9 Medicare specialty code designation is for Part B DMEPOS purposes.
10 Medicare specialty code designation is for Part B DMEPOS purposes.
11 Medicare specialty code designation is for Part B DMEPOS purposes.
12 There is no linkage to specific Healthcare Provider Taxonomy Codes because an Indian Health Service facility can be various provider types/classifications.
13 Medicare specialty code designation is for Part B DMEPOS purposes.
14 Does not meet the definition of health care provider at 45 CFR 160.103 is not eligible for an NPI.


Code
xwalk <- provider::taxonomy_crosswalk(tidy = FALSE) |> 
  janitor::clean_names() |> 
  dplyr::slice(1:558) |> 
  dplyr::mutate(
    .id = dplyr::row_number(),
    .after = provider_taxonomy_code
  ) |> 
  tidyr::separate_longer_delim(
    cols = provider_taxonomy_description_type_classification_specialization,
    delim = "/"
  ) |> 
  dplyr::mutate(
    .group = dplyr::row_number(), 
    .by = c(provider_taxonomy_code, .id)
  ) |>
  tidyr::pivot_wider(
    names_from = .group,
    values_from = provider_taxonomy_description_type_classification_specialization,
    names_prefix = "tax"
  ) |> 
  tidyr::unite(
    "specialization",
    c(tax3, tax4, tax5, tax6),
    sep = "/",
    na.rm = TRUE
  ) |> 
  dplyr::mutate(
    dplyr::across(
      dplyr::where(is.character),
      ~dplyr::na_if(., "")
    )
  )

xwalk |> 
  dplyr::reframe(
    note1 = stringr::str_extract(medicare_specialty_code, "(?<=\\[).*?(?=\\])"),
    note2 = stringr::str_extract(
      medicare_provider_supplier_type_description, "(?<=\\[).*?(?=\\])"),
    med_spec = stringr::str_remove_all(medicare_specialty_code, "\\[[0-9]{1,2}\\]"),
    med_type = stringr::str_remove_all(medicare_provider_supplier_type_description, "\\[[0-9]{1,2}\\]"),
    tax_code = provider_taxonomy_code,
    tax_grouping = dplyr::na_if(tax1, ""),
    tax_classification = dplyr::na_if(tax2, ""),
    tax_specialization = dplyr::na_if(specialization, "")
    ) |>
  dplyr::slice(1:30) |>
  gt::gt() |> 
  gt::opt_table_font(gt::google_font(name = "Karla")) |>
  gt::tab_spanner(
    label = "Medicare Specialty",
    columns = c(med_spec, med_type)
  ) |> 
  gt::tab_spanner(
    label = "Provider Taxonomy",
    columns = c(tax_code, tax_grouping, tax_classification, tax_specialization)
  ) |>
  gt::cols_label(
    med_spec = "Code",
    med_type = "Provider Type/Description",
    tax_code = "Code",
    tax_grouping = "Grouping",
    tax_classification = "Classification",
    tax_specialization = "Specialization"
  ) |>
  gt::tab_style(
    style = gt::cell_text(
      font = gt::google_font(name = "Fira Mono")),
    locations = gt::cells_body(columns = c(med_spec, tax_code))
  ) |> 
  gt::sub_missing(missing_text = "---") |> 
  gt::tab_options(
    quarto.disable_processing = TRUE
  )
note1 note2 Medicare Specialty Provider Taxonomy
Code Provider Type/Description Code Grouping Classification Specialization
01 Physician/General Practice 208D00000X Allopathic & Osteopathic Physicians General Practice
02 Physician/General Surgery 208600000X Allopathic & Osteopathic Physicians Surgery
02 Physician/General Surgery 2086H0002X Allopathic & Osteopathic Physicians Surgery Hospice and Palliative Medicine
02 Physician/General Surgery 2086S0120X Allopathic & Osteopathic Physicians Surgery Pediatric Surgery
02 Physician/General Surgery 2086S0122X Allopathic & Osteopathic Physicians Surgery Plastic and Reconstructive Surgery
02 Physician/General Surgery 2086S0105X Allopathic & Osteopathic Physicians Surgery Surgery of the Hand
02 Physician/General Surgery 2086S0102X Allopathic & Osteopathic Physicians Surgery Surgical Critical Care
02 Physician/General Surgery 2086X0206X Allopathic & Osteopathic Physicians Surgery Surgical Oncology
02 Physician/General Surgery 2086S0127X Allopathic & Osteopathic Physicians Surgery Trauma Surgery
02 Physician/General Surgery 2086S0129X Allopathic & Osteopathic Physicians Surgery Vascular Surgery
02 Physician/General Surgery 208G00000X Allopathic & Osteopathic Physicians Thoracic Surgery (Cardiothoracic Vascular Surgery)
02 Physician/General Surgery 204F00000X Allopathic & Osteopathic Physicians Transplant Surgery
02 Physician/General Surgery 208C00000X Allopathic & Osteopathic Physicians Colon & Rectal Surgery
02 Physician/General Surgery 207T00000X Allopathic & Osteopathic Physicians Neurological Surgery
02 Physician/General Surgery 204E00000X Allopathic & Osteopathic Physicians Oral & Maxillofacial Surgery
02 Physician/General Surgery 207X00000X Allopathic & Osteopathic Physicians Orthopedic Surgery
02 Physician/General Surgery 207XS0114X Allopathic & Osteopathic Physicians Orthopedic Surgery Adult Reconstructive Orthopedic Surgery
02 Physician/General Surgery 207XX0004X Allopathic & Osteopathic Physicians Orthopedic Surgery Foot and Ankle Surgery
02 Physician/General Surgery 207XS0106X Allopathic & Osteopathic Physicians Orthopedic Surgery Hand Surgery
02 Physician/General Surgery 207XS0117X Allopathic & Osteopathic Physicians Orthopedic Surgery Orthopedic Surgery of the Spine
02 Physician/General Surgery 207XX0801X Allopathic & Osteopathic Physicians Orthopedic Surgery Orthopedic Trauma
02 Physician/General Surgery 207XP3100X Allopathic & Osteopathic Physicians Orthopedic Surgery Pediatric Orthopedic Surgery
02 Physician/General Surgery 207XX0005X Allopathic & Osteopathic Physicians Orthopedic Surgery Sports Medicine
02 Physician/General Surgery 208200000X Allopathic & Osteopathic Physicians Plastic Surgery
02 Physician/General Surgery 2082S0099X Allopathic & Osteopathic Physicians Plastic Surgery Plastic Surgery Within the Head & Neck
02 Physician/General Surgery 2082S0105X Allopathic & Osteopathic Physicians Plastic Surgery Surgery of the Hand
03 Physician/Allergy/ Immunology 207K00000X Allopathic & Osteopathic Physicians Allergy and Immunology
03 Physician/Allergy/ Immunology 207KA0200X Allopathic & Osteopathic Physicians Allergy and Immunology Allergy
03 Physician/Allergy/ Immunology 207KI0005X Allopathic & Osteopathic Physicians Allergy and Immunology Clinical & Laboratory Immunology
04 Physician/Otolaryngology 207Y00000X Allopathic & Osteopathic Physicians Otolaryngology

Sources

Back to top